同じBounded Context内でのConsistency
同期的に保つか、非同期的に保つかは場合による
ただし、1つのtransactionで更新されるのは1つのAggregateにすべき
1つのtransactionで複数のAggregateを同時に更新すべきでない
そこで、今更新したい2つの間の操作を新しいAggregate(Entity)で表現できないか?を考える
例えば、2つのアカウントでお金を送金し合うものを考える際に
こういうAPIのやり取りをするのではなく、
code:aa
Strat transaction
Add X amount to accountA
Remove X amount from accountB
Commit transaction
こういうEntityを新規に作る
code:hs
data MoneyTransfer = MoneyTransfer
{ Id: MoneyTransferId
, ToAccount: AccountId
, FromAccount: AccountId
, Amount: Money
}
こうすれば、1つのAggregateの中でのConsistencyの話として捉えられるので扱いは簡単になる
処理をデータとして表現するの良い例
参考
/mrsekut-book-97816805025/131 (Consistency Between Aggregates in the Same Context)~